//----------------------------------------------------------------------------------------------------------------
//			Filename:		Chapter3.h
//			  Author:		Adrian De Barro
//			    Date:		11/08/2015
//----------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------

//INCLUDES HERE

//NAMESPACES HERE

//----------------------------------------------------------------------------------------------------------------
/**
*			Class Name:	AbstractClass
*			Class Type: Abstract Parent
*/
//----------------------------------------------------------------------------------------------------------------
class AbstractClass
{
	friend class ConcreteChildClass;
public:
	virtual void TestMethodFoo(int) = 0;
private:
	int m_squaredResult;
	int GetSquaredResult(){ return m_squaredResult; }
	void SetSquaredResult(int p_squaredResult){ m_squaredResult = p_squaredResult; }
};
//----------------------------------------------------------------------------------------------------------------
/**
*			Class Name:	AbstractClass
*			Class Type: Abstract Parent
*/
//----------------------------------------------------------------------------------------------------------------
class ConcreteChildClass : public  AbstractClass
{
public:
	using AbstractClass::TestMethodFoo;
	virtual void TestMethodFoo(int p_testInt)
	{
		m_squaredResult = p_testInt * p_testInt;
	}
};

//----------------------------------------------------------------------------------------------------------------
/**
*				Name:	Tester
*		Return Value:	VOID
*		  Parameters:   INT
*			  Status:	READY
*/
//----------------------------------------------------------------------------------------------------------------
static void Tester(int p_input)
{
	ConcreteChildClass testClass;
	testClass.TestMethodFoo(10);
}
//----------------------------------------------------------------------------------------------------------------
